#define _CRT_SECURE_NO_WARNINGS

//#include "SLTnode.h"
//
//SLT* BuySLT(int n)
//{
//	SLT* newnode = (SLT*)malloc(sizeof(SLT));
//	if (newnode == NULL)
//	{
//		assert(newnode);
//	}
//	newnode->date = n;
//	newnode->Next = NULL;
//	return newnode;
//}
//
//SLT* CreateSLT(int sum)
//{
//	SLT* phead = NULL;
//	SLT* tmp = phead;
//	for (int i = 0; i < sum; i++)
//	{
//		int num = 0;
//		scanf("%d", &num);
//		SLT* newnode = BuySLT(num);
//		if (phead == NULL)
//		{
//			phead = tmp = newnode;
//		}
//		else
//		{
//			tmp->Next = newnode;
//			tmp = newnode;
//		}
//	}
//	return phead;
//}
//
//void PrintSLT(SLT* plist)
//{
//	SLT* cur = plist;
//	while (cur)
//	{
//		printf("%d->", cur->date);
//		cur = cur->Next;
//	}
//	printf("NULL\n");
//}


//int singleNumber(int* nums, int numsSize) {
//	int sum = 0;
//	for (int i = 0; i < numsSize; i++)
//	{
//		sum ^= nums[i];
//	}
//	return sum;
//}
//
//#include <stdio.h>
//
//int cmp(const void* a, const void* b)
//{
//	return *(int*)a - *(int*)b;
//}
//
//int singleNumber(int* nums, int numsSize) {
//	qsort(nums, numsSize, sizeof(int), cmp);
//	if (numsSize == 1)
//	{
//		return nums[0];
//	}
//	for (int i = 0; i < numsSize; i++)
//	{
//		if (i == 0)
//		{
//			if (nums[i] != nums[i + 1])
//			{
//				return nums[i];
//			}
//		}
//		else if (i == numsSize - 1)
//		{
//			if (nums[i] != nums[i - 1])
//			{
//				return nums[i];
//			}
//		}
//		else
//		{
//			if (nums[i] != nums[i - 1] && nums[i] != nums[i + 1])
//			{
//				return nums[i];
//			}
//		}
//	}
//	return 0;
//}
//
//int main()
//{
//	int arr[] = { 0,0,0,1,2,3,2,3,1,2,3,1,4 , 5,4,6,4,6,6, };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//
//	printf("%d\n", singleNumber(arr, sz));
//
//	return 0;
//}



//int cmp(const void* a, const void* b)
//{
//	return *(int*)a - *(int*)b;
//}
//
//int singleNumber(int* nums, int numsSize) {
//	qsort(nums, numsSize, sizeof(int), cmp);
//	for (int i = 0; i < numsSize; i++)
//	{
//		if (i == 0)
//		{
//			if (nums[i] != nums[i + 1])
//			{
//				return nums[i];
//			}
//		}
//		else if (i == numsSize - 1)
//		{
//			if (nums[i] != nums[i - 1])
//			{
//				return nums[i];
//			}
//		}
//		else
//		{
//			if (nums[i] != nums[i - 1] && nums[i] != nums[i + 1])
//			{
//				return nums[i];
//			}
//		}
//	}
//	return 0;
//}


#include <stdio.h>
#include <stdbool.h>
#include <ctype.h>
#include <string.h>

bool isPalindrome(char* s) {
    int len = (int)strlen(s);
    char* left = s;
    char* right = s + len - 1;
    while (left < right)
    {
        while (isupper(*left) == 0 && islower(*left) == 0 && left < right)
        {
            if (*left == 0)
            {
                break;
            }
            left++;
        }
        while (isupper(*right) == 0 && islower(*right) == 0 && left < right)
        {
            if (*right == 0)
            {
                break;
            }
            right--;
        }
        if (tolower(*left) != tolower(*right))
        {
            return false;
        }
        left++;
        right--;
    }
    return true;
}

int main()
{
    char arr[] = "0P";

    printf("%d\n", isPalindrome(arr));

	return 0;
}